<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

namespace datos;

use model\Producto;
/**
 * Description of ProductoDao
 *
 * @author Jorge
 */
class ProductoDao {
    //put your code here
    private $conexion;
    function __construct($conexion) {
        $this->conexion = $conexion;
    }

    
    public function getConexion() {
        return $this->conexion;
    }

    public function setConexion($conexion) {
        $this->conexion = $conexion;
    }
    
    public function buscarProducto($producto){
        $producto = '%' . $producto . '%';
        $sql = "SELECT cod_prod, 
                       cod_prov, 
                       nombre, 
                       descripcion, 
                       categoria, 
                       costo, 
                       precio, 
                       unidad, 
                       cantidad, 
                       imagen, 
                       estado
                FROM sistemaversal.producto  
                WHERE (cod_prod like ? OR nombre like ? OR categoria like ?)"
                . "AND estado != 'b' ORDER BY nombre";
        $consulta = $this->conexion->prepare($sql);
        $consulta->execute(array($producto, $producto, $producto));
        return $consulta->fetchAll();
    }
    
    public function getProductoById($codProducto){
    	$producto = array();
    	$sql = "CALL ProductoGetById( :codProducto, @errId, @errGlosa)";
    	$consulta = $this->conexion->prepare($sql);
    	$consulta->bindValue(":codProducto", $codProducto, \PDO::PARAM_STR);    	
    	$consulta->execute();
    	$producto = $consulta->fetch(\PDO::FETCH_ASSOC);    	
    	$consulta->closeCursor();    	
    	$sql = "select @errId as errId,@errGlosa as errGlosa";
    	$outParam = $this->conexion->query($sql)->fetch(\PDO::FETCH_ASSOC);
    	$producto['errId'] = $outParam['errId'];
    	$producto['errGlosa'] = $outParam['errGlosa'];
    	return $producto;
    }
    
    public function crearProducto($producto){
         try{              
            //inserta productos nota de venta
            $sql = "INSERT INTO producto 
                    (cod_prod,
                    cod_prov,
                    nombre,
                    descripcion,
                    categoria,
                    precio,
                    unidad,
                    imagen)
                    VALUES (
                    :codigo,
                    :proveedor,
                    :nombre,
                    :descripcion,
                    :categoria,
                    :precio,
                    :unidad,
                    :archivo)";
            $consulta = $this->conexion->prepare($sql);           
            $consulta->bindValue(":codigo",     $producto->getCodigo());
            $consulta->bindValue(":proveedor",  $producto->getCodigoProveedor());
            $consulta->bindValue(":nombre",      $producto->getNombre());
            $consulta->bindValue(":descripcion", $producto->getDescripcion());
            $consulta->bindValue(":categoria", $producto->getCategoria());
            $consulta->bindValue(":precio", $producto->getPrecio());
            $consulta->bindValue(":unidad", $producto->getUnidad());
            $consulta->bindValue(":archivo", $producto->getPathImagen());            
            return $consulta->execute();                                                                   
        
        } catch (\Exception $ex) {
            throw  $ex;
        }	
    }


}
